iT邦幫忙

2021 iThome 鐵人賽

DAY 19
0

還有印象雷神索爾裡面,管理著彩虹橋的海姆達爾嗎~
只有人從彩虹橋傳送進來時,第一個面對的就是他。

在k8s裡面ingress也是扮演著相同角色,是k8s cluster 外部連接內部服務的controller

什麼是ingress

Ingress 宣告了從k8s cluster外部進入到內部服務的http(https)路由。 流量路由由Ingress定義好的規則來控制。
https://ithelp.ithome.com.tw/upload/images/20210926/20129515OXY6X0GC6D.png
圖片來源

如果沒有透過ingress就變成是外部直接對應k8s內部service,正常是不會直接把內部服務直接expose出去給外部呼叫,多層 reserve proxy相對安全。

ingress提供了

  • 外部可連入url
  • loadbalance
  • terminate ssl/tls
  • virtual hosting

一般來說使用ingess時,Service type大多會使用LoadBalancer

ingress yaml

apiVersion: networking.k8s.io/v1
kind: Ingress #kind要使用Ingress才會動嘿~
metadata:
  name: minimal-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules: #這邊定義了ingress從外部導入內部的規則
  - http:
      paths:
      - path: /testpath
        pathType: Prefix #path 前綴是/testpath時就會進入規則內
        backend:
          service: #對應k8s內部服務名稱 service叫test,使用80 PORT
            name: test
            port:
              number: 80

ingress pathType

pathType分成了 PrefixExact二種

  • Prefix : 前綴符合就符合規則
  • Exact : 需要完全一致才行,包含大小寫也要一致
type path request path match
Prefix / 全部路徑 YES
Exact /aa /aa YES
Exact /bb /cc NO
Prefix /aa /aa, /aa/ YES
Prefix /aa/cc /aa/ccc NO

基於上面邏輯的yaml,

  • rule1 : 當外部request的domain為aa.bb.com且path為/cc (ex aa.bb.com/cc)時,ingress把request導向k8s服務mytest1
  • rule2 : 當外部request的domain為aa.bb.com,只要符合*.bb.com的domain名稱就符合host的邏輯(ex aa.bb.com , a1.bb.com gg.bb.com是符合的,但是如果aa.bb.cc.com就不符合啦)且path為/cc時,ingress把request導向k8s服務mytest2
apiVersion: networking.k8s.io/v1
kind: Ingress2
metadata:
  name: ingress-test2
spec:
  rules:
  - host: "aa.bb.com"
    http:
      paths:
      - pathType: Prefix
        path: "/cc"
        backend:
          service:
            name: mytest1
            port:
              number: 80
  - host: "*.bb.com"
    http:
      paths:
      - pathType: Prefix
        path: "/cc"
        backend:
          service:
            name: mytest2
            port:
              number: 80

以上就是ingress的最基礎用法啦,因為主力不是使用ingress,所以這部份就算是淺談囉


上一篇
[DAY18]Helm棒~~
下一篇
[DAY20]新手學Istio
系列文
k8s新手船長船難記30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言